1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5 using UnityEngine.SceneManagement;
6
7 public class GameplayController : MonoBehaviour {
8 public static GameplayController instance;
9
10 public GameObject player, statusTab, deployButton, upgradeButton, coinTab, upgradMenuPanel, arrowIcon, gameoverPanel, pausePanel, cloud;
11 public bool gameInProgress, startMoving;
12 public Text warningText, coinText, currentCoinText, currentWeaponLevel, nextWeaponLevel, maxLevelText, activeWeaponLevelText, priceText, scoreText, gameoverCoinText;
13 public int coins, price;
14 public Animator upgrade;
15
16 void Awake(){
17 CreateInstance ();
18 }
19
20 // Use this for initialization
21 void Start () {
22 if(MusicController.instance != null && GameController.instance != null){
23 if (GameController.instance.isMusicOn) {
24 MusicController.instance.PlayGameplaySound ();
25 } else {
26 MusicController.instance.StopAllSound ();
27 }
28 }
29
30 InitializeGameplayVariables ();
31 }
32
33 // Update is called once per frame
34 void Update () {
35 if(Input.GetKeyDown(KeyCode.Escape)){
36 PausePanel ();
37 }
38 }
39
40 void InitializeGameplayVariables(){
41 if(GameController.instance != null){
42 InitializeCoins ();
43 InitializeWeaponLevel ();
44 InitializeUpgradePrice ();
45 }
46 InitializePlayer ();
47 statusTab.SetActive (true);
48 deployButton.SetActive (true);
49 upgradeButton.SetActive (true);
50 coinTab.SetActive (false);
51 gameoverPanel.SetActive (false);
52 startMoving = false;
53 }
54
55 void InitializeCoins(){
56 coins = 0;
57 coinText.text = coins.ToString ();
58 currentCoinText.text = GameController.instance.coins.ToString("N0");
59 }
60
61 void InitializeWeaponLevel(){
62 if (GameController.instance.weaponLevel != 5) {
63 currentWeaponLevel.text = "LVL " + GameController.instance.weaponLevel.ToString ();
64 int newLevel = GameController.instance.weaponLevel + 1;
65 nextWeaponLevel.text = "LVL " + newLevel.ToString ();
66 maxLevelText.gameObject.SetActive (false);
67 activeWeaponLevelText.text = GameController.instance.weaponLevel.ToString();
68 } else {
69 arrowIcon.SetActive (false);
70 currentWeaponLevel.gameObject.SetActive (false);
71 nextWeaponLevel.gameObject.SetActive (false);
72 maxLevelText.gameObject.SetActive (true);
73 activeWeaponLevelText.text = "MAX";
74 }
75 }
76
77
78 void InitializeUpgradePrice(){
79 if (GameController.instance.weaponLevel != 5) {
80 price = GetPrice (GameController.instance.weaponLevel);
81 priceText.text = price.ToString ();
82 } else {
83 priceText.transform.GetChild (0).gameObject.SetActive (false);
84 priceText.text = "MAX";
85 }
86
87 }
88
89 private int GetPrice(int level){
90 int nextPrice = 0;
91
92 switch(level){
93
94 case 1:
95 nextPrice = 500;
96 break;
97
98 case 2:
99 nextPrice = 1200;
100 break;
101
102 case 3:
103 nextPrice = 2500;
104 break;
105
106 case 4:
107 nextPrice = 5000;
108 break;
109 }
110
111
112 return nextPrice;
113 }
114
115 void InitializePlayer(){
116 Instantiate (player, new Vector3 (0, -3.5f, 0), Quaternion.identity);
117 }
118
119 void CreateInstance(){
120 if(instance == null){
121 instance = this;
122 }
123 }
124
125 void ClearAllEnemies(){
126 GameObject[] enemies = GameObject.FindGameObjectsWithTag ("Enemy");
127 GameObject[] bossbullets = GameObject.FindGameObjectsWithTag ("Boss Bullet");
128 GameObject[] coins = GameObject.FindGameObjectsWithTag ("Coin");
129 GameObject boss = GameObject.FindGameObjectWithTag ("Boss");
130
131 if(boss != null){
132 Destroy (boss);
133 }
134
135 if(enemies != null){
136 foreach (GameObject enemy in enemies) {
137 Destroy (enemy);
138 }
139 }
140
141 if(bossbullets != null){
142 foreach (GameObject bossBullet in bossbullets) {
143 Destroy (bossBullet);
144 }
145 }
146
147 if(coins != null){
148 foreach (GameObject coin in coins) {
149 Destroy (coin);
150 }
151 }
152
153 }
154
155 public void ShowWarning(){
156 StartCoroutine (SpawnBossTime());
157 }
158
159 IEnumerator SpawnBossTime(){
160 warningText.gameObject.SetActive (true);
161 warningText.transform.GetComponent<WarningText> ().PlayWarning ();
162 yield return new WaitForSeconds (5f);
163 warningText.gameObject.SetActive (false);
164 warningText.transform.GetComponent<WarningText> ().StopWarning ();
165 GameObject.FindGameObjectWithTag ("Spawner").transform.GetComponent<EnemySpawner> ().SpawnBoss ();
166 }
167
168
169 public void DeployButton(){
170 statusTab.SetActive (false);
171 deployButton.SetActive (false);
172 upgradeButton.SetActive (false);
173 coinTab.SetActive (true);
174 Instantiate (cloud, new Vector3(0, 0, 0), Quaternion.identity);
175 startMoving = true;
176 }
177
178 public void UpgradeButton(){
179 upgradMenuPanel.SetActive (true);
180 }
181
182 public void CloseButton(){
183 upgradMenuPanel.SetActive (false);
184 }
185
186 public void PurchaseUpgrade(){
187
188 if(GameController.instance != null){
189 if(GameController.instance.weaponLevel != 5){
190 if (GameController.instance.coins >= price) {
191 GameController.instance.coins -= price;
192 GameController.instance.weaponLevel += 1;
193
194 GameController.instance.Save ();
195
196 InitializeCoins ();
197 InitializeUpgradePrice ();
198 InitializeWeaponLevel ();
199 } else {
200 upgrade.Play ("Upgrade Button Anim");
201 }
202 }
203 }
204 }
205
206 public void UpdateCoins(){
207 coins += 1;
208 coinText.text = coins.ToString ();
209 }
210
211 public void GameOver(){
212 gameoverPanel.SetActive (true);
213 gameoverCoinText.text = coins.ToString ("N0");
214 scoreText.text = coins.ToString ("N0");
215 if(GameController.instance.coins != null){
216 GameController.instance.coins += coins;
217 GameController.instance.Save ();
218 }
219 }
220
221 public void RetryButton(){
222 InitializeGameplayVariables ();
223 ClearAllEnemies ();
224 gameInProgress = false;
225 GameObject.FindGameObjectWithTag ("Spawner").transform.GetComponent<EnemySpawner> ().active = false;
226 }
227
228 public void InitializeSpawners(){
229 GameObject.FindGameObjectWithTag ("Spawner").transform.GetComponent<EnemySpawner> ().InitializeVariables ();
230 gameInProgress = true;
231 }
232
233 public void ResumeButton(){
234 pausePanel.SetActive (false);
235 Time.timeScale = 1;
236 gameInProgress = true;
237 }
238
239 public void QuitButton(){
240 SceneManager.LoadScene ("Main Menu");
241 Time.timeScale = 1;
242 }
243
244 void PausePanel(){
245 if (gameInProgress && !pausePanel.activeInHierarchy) {
246 pausePanel.SetActive (true);
247 Time.timeScale = 0;
248 gameInProgress = false;
249 } else if(!gameInProgress && !pausePanel.activeInHierarchy) {
250 SceneManager.LoadScene ("Main Menu");
251 }
252 }
253
254
255 }
Use this for initialization
Update is called once per frame